xdata={0.5,1,1.4,2,2.5,3,3.6,4,4.8};
ydata={0.2,1,3.5,8,15.5,28,43.1,64,112.5};
xydata=Transpose[{xdata,ydata}];
MatrixForm[xydata]
dataplot=ListPlot[xydata]

f1=Fit[xydata,{1,x},x]

f1graph=Plot[f1,{x,0,5}];
Show[f1graph,dataplot]

f2=Fit[xydata,{1,x,x^2},x]

f2graph=Plot[f2,{x,0,5}];
Show[f2graph,dataplot]

f3=Fit[xydata,{1,x,E^x},x]

f3graph=Plot[f3,{x,0,5}];
Show[f3graph,dataplot]

We must develop a test to determine which model to use. By transformation, we can visually (graphically) determine which model to use. In the following we demonstrate the comparison between exponential and power models.

lnydata=N[Log[ydata]];
xlnydata=Transpose[{xdata,lnydata}];
MatrixForm[xlnydata]
logplot=ListPlot[xlnydata,Joined->True]

lnxdata=N[Log[xdata]];
lnxlnydata=Transpose[{lnxdata,lnydata}];
MatrixForm[lnxlnydata]
loglogplot=ListPlot[lnxlnydata,Joined->True]

Show[logplot,loglogplot]

Since the graph of points (ln x, lny) seems more linear, we will fit a line to those transformed data points. However, comparison of transformed data points (x, lny) and (ln x, ln y) might be difficult visually since x and ln x are not in the same scale!

In general, one can do many different transformations and possibly believe that another transformation also looks linear. This is specially true in visual inspection since different transformations may result in different scales!

Fit[lnxlnydata,{1,u},u]

ln y = 0.208145 + 2.81877 ln x
e^ (ln y)=e^(0.208145+2.81877 ln x)
y=e^(0.208145) e^(2.81877  ln x)=e^(0.208145) (e^(ln x)\)^2.81877
y=e^(0.208145)  x^(2.81877)
y=1.23 x^(2.82)

y=1.23 x^(2.82);
modelplot=Plot[y,{x,0,5}];
Show[dataplot,modelplot]

Clear[xdata,ydata,xydata,dataplot,f1,f1graph,f2,f2graph,f3,f3graph]

xdata={1.1,2,3.1,4.1,4.9,6};
ydata={0.34,0.46,0.61,0.83,1.12,1.51};
xydata=Transpose[{xdata,ydata}];
MatrixForm[xydata]
dataplot=ListPlot[xydata]
lnydata=Log[ydata];
xlnydata=Transpose[{xdata,lnydata}];
MatrixForm[xlnydata]
logplot=ListPlot[xlnydata,Joined->True]
lnxdata=N[Log[xdata]];
lnxlnydata=Transpose[{lnxdata,lnydata}];
MatrixForm[lnxlnydata]
loglogplot=ListPlot[lnxlnydata,Joined->True]
Show[logplot,loglogplot]

Since the graph of points (x, lny) seems more linear, we will fit a line to those transformed data points.

Fit[xlnydata,{1,u},u]

ln y = -1.4111 + 0.30453 x 
e^(ln y) = e^(-1.4111 + 0.30453 x)
y = e^(-1.4111) e^(0.30453 x)
y=0.24387 e^(0.30453x)

y=0.24387 E^(0.30453 x);
modelplot=Plot[y,{x,0.5,6.5}];
Show[dataplot,modelplot]

An important point to consider is that the model obtained from fitting the transformed data is not the same as fitting the data to the type of chosen model. Fitting a line to the log plot resulted in the model y=0.24387 e^(0.30453 x). Now, let’s fit the original data to a model of the form y= a e^(bx). As you see below, fitting the data to this model results in  y=0.24293 e^(0.30559 x).

FindFit[xydata,{a E^(b x)},{a,b},{x}]

So, we must always compare the model with the original data and apply whatever criterion we are using for the best fit. In this case, visually, the difference seems nonexistent.

y2=0.24293 E^(0.305594 x);
model2plot=Plot[y2,{x,0.5,6.5},PlotStyle->{RGBColor[1,0,0]}];
Show[dataplot,modelplot,model2plot]
Show[dataplot,model2plot,modelplot]

Clear[xdata,ydata,xydata,dataplot,lnydata,xlnydata,logplot]